
// 屏幕自适应
function selfAdaption () {
  var html = document.documentElement
  var hWidth = html.getBoundingClientRect().width
  html.style.fontSize = hWidth / 25 + 'px'
  // 以320px为宽设为16,rem设为20,以375px为宽设为25,rem设为15,
}
// 过滤并显示图片
function imgFilterAndShow (file) {
 	// let index = file.name.indexOf('.')
  // //console.log(file.name.slice(index+1));
  // let fileType = file.name.slice(index+1)//获取文件后缀
  // let isJPG = fileType.toLowerCase() === 'jpg'|| fileType === 'jpeg';
  // let isPNG = fileType.toLowerCase() === 'png';
  // let isGIF = fileType.toLowerCase() === 'gif';
  // //图片大小限制2M
  // let isLt2M = file.size / 1024 / 1024 < 4;

  // if (!isJPG &&!isPNG && !isGIF) {
  // 	return -1;
  // }
  // if (!isLt2M) {
  // 	return -2;
  // }
  // 显示图片
  // if(isJPG||isPNG||isGIF && isLt2M){
    // console.log(URL.createObjectURL(file))
  return URL.createObjectURL(file)
  // }
}

// 将保单图片转为base64
function convertImgToDataURLviaCanvas (url, callback, outputFormat) {
  var img = new Image()
  img.src = url
  img.onload = function () {
    let canvas = document.createElement('canvas')
    let ctx = canvas.getContext('2d')
    let dataURL
    canvas.height = this.height
    canvas.width = this.width
    ctx.drawImage(this, 0, 0)
    dataURL = canvas.toDataURL(outputFormat)
    callback(dataURL)
    canvas = null
  }
}
// 将bass64转为文件
function dataURLtoFile (dataurl) {
  let arr = dataurl.split(',')
  let mime = arr[0].match(/:(.*?);/)[1]
  let bstr = atob(arr[1])
  let n = bstr.length
  let u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], '1.jpg', {type: mime})
}
// 判断当前系统
function getSystem () {
  var u = navigator.userAgent, app = navigator.appVersion
  var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1 // g
  var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端
  if (isAndroid) {
    // 这个是安卓操作系统
    return 1
  }
  if (isIOS) {
　　// 这个是ios操作系统
    return 2
  }
  return 3
}
// 获取正确的图片文件
function imgPreview (file, Orientation, callback) {
  let that = this
  // 看支持不支持FileReader
  if (!file || !window.FileReader) return

  if (/^image/.test(file.type)) {
    // 创建一个reader
    let reader = new FileReader()
    // 将图片2将转成 base64 格式
    reader.readAsDataURL(file)
    // 读取成功后的回调
    reader.onloadend = function () {
      let result = this.result
      let img = new Image()
      img.src = result
      img.onload = function () {
        let file = compress(img, Orientation)
        // console.log(file)
        callback(file)
        // that.postImg();
      }
    }
  }
}
// 旋转canvas的图片
function rotateImg (img, direction, canvas) {
  // 最小与最大旋转方向，图片旋转4次后回到原方向
  const min_step = 0
  const max_step = 3
  if (img == null) return
  // img的高度和宽度不能在img元素隐藏后获取，否则会出错
  let height = img.height
  let width = img.width
  let step = 2
  if (step == null) {
    step = min_step
  }
  if (direction == 'right') {
    step++
    // 旋转到原位置，即超过最大值
    step > max_step && (step = min_step)
  } else {
    step--
    step < min_step && (step = max_step)
  }
  // 旋转角度以弧度值为参数
  let degree = step * 90 * Math.PI / 180
  let ctx = canvas.getContext('2d')
  switch (step) {
    case 0:
      canvas.width = width
      canvas.height = height
      ctx.drawImage(img, 0, 0)
      break
    case 1:
      canvas.width = height
      canvas.height = width
      ctx.rotate(degree)
      ctx.drawImage(img, 0, -height)
      break
    case 2:
      canvas.width = width
      canvas.height = height
      ctx.rotate(degree)
      ctx.drawImage(img, -width, -height)
      break
    case 3:
      canvas.width = height
      canvas.height = width
      ctx.rotate(degree)
      ctx.drawImage(img, -width, 0)
      break
  }
}
// 压缩并旋转返回文件
function compress (img, Orientation) {
  let canvas = document.createElement('canvas')
  let ctx = canvas.getContext('2d')
  // 瓦片canvas
  let tCanvas = document.createElement('canvas')
  let tctx = tCanvas.getContext('2d')
  let initSize = img.src.length
  let width = img.width
  let height = img.height
  // 如果图片大于四百万像素，计算压缩比并将大小压至400万以下
  let ratio = 1
  // if ((ratio = width * height / 4000000) > 1) {
  //   console.log("大于400万像素")
  //   ratio = Math.sqrt(ratio);
  //   width /= ratio;
  //   height /= ratio;
  // } else {
  //   ratio = 1;
  // }
  canvas.width = width
  canvas.height = height
  // 铺底色
  ctx.fillStyle = '#fff'
  ctx.fillRect(0, 0, canvas.width, canvas.height)
  // 如果图片像素大于100万则使用瓦片绘制
  // let count;
  // if ((count = width * height / 1000000) > 1) {
  //   console.log("超过100W像素");
  //   count = ~~(Math.sqrt(count) + 1); //计算要分成多少块瓦片
  // // 计算每块瓦片的宽和高
  //   let nw = ~~(width / count);
  //   let nh = ~~(height / count);
  //   tCanvas.width = nw;
  //   tCanvas.height = nh;
  //   for (let i = 0; i < count; i++) {
  //     for (let j = 0; j < count; j++) {
  //       tctx.drawImage(img, i * nw * ratio, j * nh * ratio, nw * ratio, nh * ratio, 0, 0, nw, nh);
  //       ctx.drawImage(tCanvas, i * nw, j * nh, nw, nh);
  //     }
  //   }
  // } else {
  //   ctx.drawImage(img, 0, 0, width, height);
  // }
  ctx.drawImage(img, 0, 0, width, height)
  // 修复ios上传图片的时候 被旋转的问题
  if (Orientation != '' && Orientation != 1) {
    switch (Orientation) {
      case 6:// 需要顺时针（向左）90度旋转
        rotateImg(img, 'left', canvas)
        break
      case 8:// 需要逆时针（向右）90度旋转
        rotateImg(img, 'right', canvas)
        break
      case 3:// 需要180度旋转
        rotateImg(img, 'right', canvas)// 转两次
        rotateImg(img, 'right', canvas)
        break
    }
  }
  // 转为文件等待上传
  let ndata = canvas.toDataURL('image/jpeg')
  tCanvas.width = tCanvas.height = canvas.width = canvas.height = 0
  return dataURLtoFile(ndata)
}

// 返回角度
function getSlideAngle (dx, dy) {
  return Math.atan2(dy, dx) * 180 / Math.PI
}

// 阻止滚动默认事件
function preventDefaultEvent (event) {
  event.preventDefault()
}
// 禁止滚动
function forbidScroll (dom) {
  dom.style.overflow = 'hidden'
  dom.style.height = '100%'
  // document.body.style.overflow= 'hidden'//PC端跟Android
  // document.getElementsByTagName('html')[0].style.overflow = 'hidden'
  // document.body.addEventListener('touchmove',preventDefaultEvent, { passive: false });//iphone
}

// 恢复滚动
function allowScroll (dom) {
  dom.style.overflow = 'hidden'
  dom.style.height = ''
  // document.body.style.overflow= ''//PC端跟Android
  // document.getElementsByTagName('html')[0].style.overflow = ''
  // document.body.removeEventListener('touchmove',preventDefaultEvent, { passive: false });//iphone
}

function getUrlParam (name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
  var r = window.location.search.substr(1).match(reg)
  if (r != null) { return unescape(r[2]) }
  return null
}
function onMenuShareAppMessage (object, title, desc, link, imgUrl) {
  object.onMenuShareAppMessage({
    title: title, // 分享标题
    desc: desc, // 分享描述
    link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl: imgUrl, // 分享图标
    type: '', // 分享类型,music、video或link，不填默认为link
    dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
    success: function (res) {
      // 用户确认分享后执行的回调函数
      console.log('分享成功')
      console.log(res)
    },
    cancel: function (res) {
      // 用户取消分享后执行的回调函数
      console.log('取消分享')
      console.log(res)
    }
  })
}

function onMenuShareTimeline (object, title, link, imgUrl) {
  object.onMenuShareTimeline({
    title: title, // 分享标题
    link: link,
    imgUrl: imgUrl, // 分享图标
    success: function () {
      // 用户确认分享后执行的回调函数
      console.log('分享成功')
    },
    cancel: function () {
      // 用户取消分享后执行的回调函数
      console.log('取消分享')
    }
  })
}
export {
  selfAdaption,
  imgFilterAndShow,
  convertImgToDataURLviaCanvas,
  dataURLtoFile,
  getSystem,
  imgPreview,
  getSlideAngle,
  forbidScroll,
  allowScroll,
  getUrlParam,
  onMenuShareAppMessage,
  onMenuShareTimeline
}
